<template>
	<gracePage :customHeader="false">
		<!-- 页面主体 -->
		<view class="grace-body" slot="gBody">

			<view class="grace-list" v-for="(item,index) in objects" :key="index">
				<view class="grace-list-items" @tap="openFile(item)">
					<view class="grace-list-body grace-border-b">
						<view class="grace-list-title">
							<text class="grace-list-title-text">{{item.field29}}</text>
						</view>
						<view class="grace-list-body-desc"></view>
					</view>
					<text class="grace-list-arrow-right grace-icons icon-arrow-right"></text>
				</view>

				
			</view>

		</view>

	</gracePage>
</template>
<script>
	var _self; 
import gracePage from "../../graceUI/components/gracePage.vue";
export default {
	data() {
		return {
			objects:[],//缓存题目作为用户试题的基础
			loadMoreText : "加载更多",
			showLoadMore : false,
			pageNum : 1,
			//每次加载的记录数
			pageSize : 50,
			//解决列表触底加载过程中服务器新增数据问题
			createTimeTo : "",
			token:"",
			production:"",
			productionID:'',
			topicImageSrc:"",//题目图片地址前缀
		}
	},
	onLoad:function(e){
		_self = this;
		
		//记录时间，用于列表查询，必须在查询列表请求前获取时间
		_self.createTimeTo = _self.$myFunction.nowTime('Y-m-d H:i:s');
		_self.topicImageSrc = _self.$myFunction.appConfig().serverIp+"resource/yunShangTianKong/topic/";
		
		//读取课程信息
		_self.productionID = e.id;
		// _self.productionID = 9;
		_self.getProductionList(_self.productionID);
	},
	methods:{
		getProductionList: function(){
			uni.showToast({
				title: '请稍后...',
				duration:_self.$myFunction.appConfig().requestWaitTime,
				icon: 'none',
			});
			var params = {
				'id': _self.productionID
			};	
			var paramsData = {
				"jsonParas":_self.$AesUtil.encrypt(encodeURIComponent(JSON.stringify(params)))
			}		
			//重新获取一次token，防止接口返回认证失败系统重新获取的token未被使用
			_self.token = _self.$myFunction.appStorage('wuLuToken').token;				
			uni.request({
				url:  _self.$myFunction.appConfig().serverAddress+'productionDetail',
				data: paramsData,
				method : "POST",
				header : {
					'content-type':'application/x-www-form-urlencoded',
					'Authentication':_self.token
				},					
				success: data => {
					_self.$myFunction.displayLog("服务器返回数据："+JSON.stringify(data));
					uni.hideToast();
					if (data.data.code == 200) {
						_self.production = data.data.data.productionDto;	
						//获取课程对应的题目列表
						_self.getList("理论大纲");
					}else{
						//如果请求数据因token认证失败，则清空缓存token
						if(data.data.message.indexOf("接口访问未认证") != -1){
							uni.setStorage({
								key: 'wuLuToken',
								data: "",
								success: function () {	
									_self.$myFunction.displayLog("清空缓存token");
									//触发重新获取token
									_self.$myFunction.getToken();
									// 关闭所有页面，打开到应用内的某个页面。
									_self.$myFunction.displayLog("重加载当前页面");
									uni.reLaunch({
										url: '/pages/study/liLunDaGangTopic'
									});
								}
							});
						}else{
							uni.showToast({title: "发生错误，请重试",icon: 'none'});
						}	
					}
				},
				fail: (data, code) => {
					uni.hideToast();
					uni.showToast({title: '连接失败...',icon: 'none'});
				}					
			});				
		},
		// 获取题目列表
		getList: function(content){
			uni.showToast({
				title: '请稍后...',
				duration:_self.$myFunction.appConfig().requestWaitTime,
				icon: 'none',
			});
			var params = {
				'field1':content,
				'pageNum':_self.pageNum,
				'pageSize':_self.pageSize,
				'field':"createTime",
				'createTimeTo':_self.createTimeTo,
				'order':'asc',
				'status':"1"
			};	
			
			//重新获取一次token，防止接口返回认证失败系统重新获取的token未被使用
			_self.token = _self.$myFunction.appStorage('wuLuToken').token;
			uni.request({
				url:  _self.$myFunction.appConfig().serverAddress+'topicList',
				data: params,
				method : "POST",
				header : {
					'content-type':'application/x-www-form-urlencoded',
					'Authentication':_self.token
				},		
				success: data => {
					// 刷新完毕后关闭刷新
					uni.hideToast();
					uni.stopPullDownRefresh();
					_self.$myFunction.displayLog("服务器返回数据："+JSON.stringify(data));					
					if (data.data.code == 200) {
						//总记录数
						var total = data.data.data.total;
						// _self.$myFunction.displayLog("服务器返回数据总记录数："+total);
						var objectsData=data.data.data.rows;
						// _self.$myFunction.displayLog("服务器返回当前查询条件记录数："+objectsData.length);						
						if(total == 0){//查询到0条记录
							return;
						}else{
							if(_self.showLoadMore){//触底加载数据
								if(_self.objects.length == total){
									_self.loadMoreText = "没有更多数据了";
									_self.pageNum = 1;
								}else if(_self.objects.length < total){//后台有未加载数据
									//以用户打开界面那一刻作为时间参考点
									//两种情况：
									//1、后台有未加载历史数据
									//2、后台有新增数据（此种情况不处理，因为需要刷新列表才能将最新数据展示在最前方）
									//listObjectNum:总记录数-当前列表记录数
									for (let i = 0; i < objectsData.length; i++) {
										//避免第2种情况发生时循环过后列表会产生重复记录(有时间参数createTimeTo，此种情况不存在)
										// let duplicateRecord = false;
										// for(let j = 0;j<_self.objects.length;j++){
										// 	if(_self.objects[j].id == objectsData[i].id){
										// 		duplicateRecord = true;
										// 	}
										// }
										// if(!duplicateRecord){
											_self.objects.push(objectsData[i]);
										// }
									}
									//返回的行数小于pageSize，证明数据已全部加载完毕
									if(objectsData.length<_self.pageSize){
										_self.loadMoreText = "没有更多数据了";
									}else{
										_self.loadMoreText = "加载更多";
									}
								}else if(_self.objects.length > total){//后台有删除数据
									//后台有数据被删除时不做数据处理，即前端显示有已被删除的数据
									//此时，当点击记录查看详情时应提示"此发布已删除"
									_self.loadMoreText = "没有更多数据了";
								}
							}else{//普通重新加载
								_self.objects.splice(0);
							
								for (let i = 0; i < objectsData.length; i++) {
									
									_self.objects.push(objectsData[i]);
								
								}
			
							}
						}
					}else{
						//如果请求数据因token认证失败，则清空缓存token
						if(data.data.message.indexOf("接口访问未认证") != -1){
							uni.setStorage({
								key: 'wuLuToken',
								data: "",
								success: function () {	
									_self.$myFunction.displayLog("清空缓存token");
									//触发重新获取token
									_self.$myFunction.getToken();
									// 关闭所有页面，打开到应用内的某个页面。
									_self.$myFunction.displayLog("重加载当前页面");
									uni.reLaunch({
										url: '/pages/study/liLunDaGangTopic'
									});
								}
							});
						}else{
							_self.$myFunction.displayLog("题目列表读取失败："+JSON.stringify(data));
							uni.hideToast();
							uni.showToast({title: '连接失败...',icon: 'none'});
						}	
					}
				},
				fail: (data, code) => {
					uni.hideToast();
					uni.showToast({title: '连接失败...',icon: 'none'});
				}
			});
		},
		openFile:function(item){	
			uni.navigateTo({//保留当前页面，跳转到应用内的某个页面
				url: '/pages/study/liLunDaGangTopicView?id='+item.id+"&images="+item.field32+"&productCode="+_self.production.field1
			})
		}
	},
	components:{
		gracePage
	}
}
</script>
<style>
</style>